function SquareOverlay(center, titles, className, id) {
	this._center = center;
	this._className = className;
	this._titles = titles;
	this._id = id;
}

// 继承API的BMap.Overlay
SquareOverlay.prototype = new BMap.Overlay();

// 实现初始化方法
SquareOverlay.prototype.initialize = function(map) {
	// 保存map对象实例
	this._map = map;

	// 创建div元素，作为自定义覆盖物的容器
	var div = document.createElement("div");
	div.style.position = "absolute";
	div.id = this._id;
	div.className = this._className + " heighlight";
	div.innerHTML = '<div class="leftpart">&nbsp;</div><div class="rightpart">'
			+ this._titles + '</div>';
	map.getPanes().markerPane.appendChild(div);
	this._div = div;
	return div;
}

// 实现绘制方法
SquareOverlay.prototype.draw = function() {

	// 根据地理坐标转换为像素坐标，并设置给容器
	var position = this._map.pointToOverlayPixel(this._center);
	this._div.style.left = position.x + "px";
	this._div.style.top = (position.y - 36) + "px";
}

// 实现显示方法
SquareOverlay.prototype.show = function() {
	if (this._div) {
		this._div.style.display = "";
	}
}

// 实现隐藏方法
SquareOverlay.prototype.hide = function() {
	if (this._div) {
		this._div.style.display = "none";
	}
}

// 添加自定义方法
SquareOverlay.prototype.toggle = function() {
	if (this._div) {
		if (this._div.style.display == "") {
			this.hide();
		} else {
			this.show();
		}
	}
}

function initMap(options, types) {
	var _options = options || {};
	if (types == 0) {
		createMap(_options.div, _options.address, _options.titles,
				_options.classname, _options.id, _options.city);// 创建地图
	} else {
		createMap1(_options.div, _options.lng, _options.lat, _options.titles,
				_options.classname, _options.id);// 创建地图
	}
	setMapEvent();// 设置地图事件
	addMapControl();// 向地图添加控件
}

function createMap1(div, lng, lat, titles, classname, id) {
	var map = new BMap.Map(div);// 在百度地图容器中创建一个地图
	var point = new BMap.Point(lng, lat);
	parent.document.getElementById("lng").value = point.lng;
	parent.document.getElementById("lat").value = point.lat;
	map.centerAndZoom(point, 16);
	var mySquare = new SquareOverlay(map.getCenter(), titles, classname, id);
	map.addOverlay(mySquare);
	window.map = map;
}

// 创建地图函数：
function createMap(div, address, titles, classname, id, city) {
	var map = new BMap.Map(div);// 在百度地图容器中创建一个地图
	var myGeo = new BMap.Geocoder();
	// 将结果显示在地图上，并调整地图视野
	myGeo.getPoint(address, function(point) {
		if (point) {
			parent.document.getElementById("lng").value = point.lng;
			parent.document.getElementById("lat").value = point.lat;
			map.centerAndZoom(point, 16);
			var mySquare = new SquareOverlay(map.getCenter(), titles,
					classname, id);
			map.addOverlay(mySquare);

		} 
	}, city);
	window.map = map;// 将map变量存储在全局
}

function addMaker() {
	map.clearOverlays();
	parent.document.getElementById("up_point").style.display = 'none';
	parent.document.getElementById("save_point").style.display = '';
	var point = new BMap.Point(parent.document.getElementById("lng").value,
			parent.document.getElementById("lat").value);
	var marker = new BMap.Marker(point);
	map.addOverlay(marker);
	marker.enableDragging(); // 设置标注可拖拽
	marker.addEventListener("dragend", function(e) {
		parent.document.getElementById("lng").value = e.point.lng;
		parent.document.getElementById("lat").value = e.point.lat;
	});
}
// 地图事件设置函数：
function setMapEvent() {
	map.enableDragging();// 启用地图拖拽事件，默认启用(可不写)
	map.enableScrollWheelZoom();// 启用地图滚轮放大缩小
	map.enableDoubleClickZoom();// 启用鼠标双击放大，默认启用(可不写)
	map.enableKeyboard();// 启用键盘上下左右键移动地图
}

// 地图控件添加函数：
function addMapControl() {
	// 向地图中添加缩放控件
	var ctrl_nav = new BMap.NavigationControl({
		anchor : BMAP_ANCHOR_TOP_LEFT,
		type : BMAP_NAVIGATION_CONTROL_LARGE
	});
	map.addControl(ctrl_nav);
	// 向地图中添加缩略图控件
	// var ctrl_ove = new
	// BMap.OverviewMapControl({anchor:BMAP_ANCHOR_BOTTOM_RIGHT,isOpen:1});
	// map.addControl(ctrl_ove);
	// 向地图中添加比例尺控件
	// var ctrl_sca = new BMap.ScaleControl({anchor:BMAP_ANCHOR_BOTTOM_LEFT});
	// map.addControl(ctrl_sca);
}